Clock Exercise

Q

How did you calculate your clients average clock drift rate?


After each successful request to the NTP server I divided the calculated clock offset by \(10 + (10*numfails)\) where numfails is the number of failed attempts since the last successful attempt. Since a request to the server is made every 10 seconds this gives a good approximation for the drift per second (in microseconds).

I kept an array of these values and calculated the average at each iteration. The final average was \(12.032miliseconds\)

Picking the Timeout

Q

what timeout did you pick to detect a failed interaction? What happens if the server’s response packet arrives after that timeout

I picked 10 seconds as the timeout. The resulting packet loss rate was \(4%\). When a timeout occurred the failure was counted and no other stats were calculated

while True:
        ...
        try:
                t3 = calc_time()
                data, address = client.recvfrom( 1024 )
                t0 = calc_time()
                succs += 1
        except Exception as ex:
                losses += 1
                logger.debug(f'timeout: {losses}')
                continue
        ...
        stat = {
                'offset':off,
                'RTT':rtt,
                'smoothed_offset':smoff,
                'smoothed_RTT':smrtt,
                'drop_rate':round(losses/(succs+losses), 2)*100,
                'current_system_time':now,
                'adjusted_system_time':adjusted,
                'current_drift':drift,
                'average_drift':sum(drifts)/len(drifts),
                'average_RTT':sum(rtts)/len(rtts),
        }
        logger.debug(stat)
        time.sleep(10)

Graphing the Clock Drift

I created this histogram of the clock drift per second (in miliseconds) for each successful interaction with the server. Note that there were 3200 interactions logged

As you can see most of the time the drift was positive, meaning that my machine’s clock was running faster than the NTP server’s. The histogram reflects a fairly normal distribution.

The scatter plot shows that the clock drift skews slightly to the right over time, but the width (range of the values) stays mostly constant. Adding in the plot of the average drift (calculated at each interaction) you can get a better picture of the overall trend. The average slowly increases over time which means that the client machine is getting out of sync with the NTP server at a faster rate.

Python Code for the NTP client

import socket
import struct
import sys
import time
import logging
import math
NTP_SERVER = "0.uk.pool.ntp.org"
TIME1970 = 2208988800

logger = logging.getLogger('rtt_and_offset')
logger.setLevel(logging.DEBUG)
handler = logging.FileHandler('rtt_offset.log')
handler.setLevel(logging.DEBUG)
logger.addHandler(handler)


SOCKET_TIMEOUT = 10
NANOS = 1000000000

def calc_time():
    t = time.time()
    return (t//1, (t%1)*NANOS//1)

def diff(a, b):
    secs = b[0]-a[0]
    nanos = b[1]-a[1]
    nanos = (NANOS)*secs + nanos

    return nanos

def addnanos(it, nanos):
    newnanos, secs = it[1]+nanos, it[0]
    if newnanos >= NANOS:
        secs += 1 
        newnanos -= NANOS
    return (secs, newnanos)

stats, drifts, rtts = [], [], []
succs, losses, cur_fails = 0, 0, 0
while True:
    data = '\x1b' + 47 * '\0'
    data = data.encode('utf-8')
    client = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
    client.settimeout(SOCKET_TIMEOUT)
    client.sendto( data,( NTP_SERVER, 123 ))
    try:
        t3 = calc_time()
        data, address = client.recvfrom( 1024 )
        t0 = calc_time()
        succs += 1
    except Exception as ex:
        losses += 1
        logger.debug(f'timeout: {losses}')
        continue

    resp = struct.unpack( '!12I', data )

    reference = (resp[4]-TIME1970, resp[5]%NANOS)
    originate = (resp[6]-TIME1970, resp[7]%NANOS)
    receive   = (resp[8]-TIME1970, resp[9]%NANOS)
    transmit  = (resp[10]-TIME1970, resp[11]%NANOS)

    t1, t2 = transmit, receive

    off, rtt = (diff(t3,t2) - diff(t1,t0))/2, diff(t3, t0)
    drift = off/((10+(rtt/NANOS))*(losses-cur_fails+1))
    drifts.append(drift)
    cur_fails = losses

    rtts.append(rtt)

    stats.append((rtt, off))
    if len(stats) >= 8:
        stats = stats[1:]

    smrtt, smoff = min(stats, key=lambda st: st[0])

    now = calc_time()
    adjusted = addnanos(now, smoff)

    stat = {
            'offset':off,
            'RTT':rtt,
            'smoothed_offset':smoff,
            'smoothed_RTT':smrtt,
            'drop_rate':round(losses/(succs+losses), 2)*100,
            'current_system_time':now,
            'adjusted_system_time':adjusted,
            'current_drift':drift,
            'average_drift':sum(drifts)/len(drifts),
            'average_RTT':sum(rtts)/len(rtts),
    }

    logger.debug(stat)

    time.sleep(10)



Python Code for Parsing the Log and Producing the Graphs

import re
import pandas
import numpy
import plotly.express as px
import plotly.graph_objects as go
from types import SimpleNamespace

with open('rtt_offset.log') as log:
    data = re.findall('{.*?}', log.read())

stats = [eval(it) for it in data]

avg_RTT = stats[-1]['average_RTT']/1000000000
packet_loss_rate = stats[-1]['drop_rate']
avg_drift_in_milis = stats[-1]['average_drift']/1000000


for stat in stats:
    stat['current_drift'] /= 1000000
    stat['average_drift'] /= 1000000

frame = pandas.DataFrame(stats)

fig = px.histogram(frame, x='current_drift', 
        marginal = 'violin',
        title='Histogram of Clock Drift Per Second', 
        labels={'current_drift':'drift_in_miliseconds_per_second', 'y':'percent of records'}, 
        opacity=0.7, 
        color_discrete_sequence=['indianred'],
        hover_data=frame.columns)
fig.update_layout(xaxis_title="Drift in miliseconds/sec", yaxis_title="Count")
fig.write_html('fig1.html')

fig2 = px.scatter(frame, x='current_drift')
fig2.add_trace(go.Scattergl(
    x=frame.average_drift, 
    mode='markers', 
    name='average drift at each interaction',
     marker=dict(
        size=10,
        color=numpy.random.randn(1000), #set color equal to a variable
        colorscale='Viridis', # one of plotly colorscales
        line_width=1
    )
))
fig2.update_layout(title='Scatterplot of Clock Drift', 
        xaxis_title="Drift in miliseconds/sec", 
        yaxis_title="Count")
fig2.show()
fig2.write_html('fig2.html')



The Head of the Log Output

{'offset': -487609773.0, 'RTT': 153340816.0, 'smoothed_offset': -487609773.0, 'smoothed_RTT': 153340816.0, 'drop_rate': 0.0, 'current_system_time': (1589143488.0, 834543943.0), 'adjusted_system_time': (1589143488.0, 346934170.0), 'current_drift': -48024564.70599381, 'average_drift': -48024564.70599381, 'average_RTT': 153340816.0}
{'offset': -782231681.5, 'RTT': 165259122.0, 'smoothed_offset': -487609773.0, 'smoothed_RTT': 153340816.0, 'drop_rate': 0.0, 'current_system_time': (1589143499.0, 51958084.0), 'adjusted_system_time': (1589143499.0, -435651689.0), 'current_drift': -76951474.83324528, 'average_drift': -62488019.76961954, 'average_RTT': 159299969.0}
{'offset': 405187118.5, 'RTT': 21826267.0, 'smoothed_offset': 405187118.5, 'smoothed_RTT': 21826267.0, 'drop_rate': 0.0, 'current_system_time': (1589143509.0, 130331754.0), 'adjusted_system_time': (1589143509.0, 535518872.5), 'current_drift': 40430467.23272438, 'average_drift': -28181857.4355049, 'average_RTT': 113475401.66666667}
{'offset': -134287537.5, 'RTT': 151166439.0, 'smoothed_offset': 405187118.5, 'smoothed_RTT': 21826267.0, 'drop_rate': 0.0, 'current_system_time': (1589143519.0, 336845874.0), 'adjusted_system_time': (1589143519.0, 742032992.5), 'current_drift': -13228779.008496758, 'average_drift': -24443587.828752864, 'average_RTT': 122898161.0}
{'offset': 413104544.0, 'RTT': 156281471.0, 'smoothed_offset': 405187118.5, 'smoothed_RTT': 21826267.0, 'drop_rate': 0.0, 'current_system_time': (1589143529.0, 499895572.0), 'adjusted_system_time': (1589143529.0, 905082690.5), 'current_drift': 40674782.90943085, 'average_drift': -11419913.681116123, 'average_RTT': 129574823.0}
{'offset': 97151269.5, 'RTT': 162478208.0, 'smoothed_offset': 405187118.5, 'smoothed_RTT': 21826267.0, 'drop_rate': 0.0, 'current_system_time': (1589143539.0, 716450929.0), 'adjusted_system_time': (1589143540.0, 121638047.5), 'current_drift': 9559801.016205043, 'average_drift': -7923294.564895928, 'average_RTT': 135058720.5}
{'offset': -524623306.5, 'RTT': 18080711.0, 'smoothed_offset': -524623306.5, 'smoothed_RTT': 18080711.0, 'drop_rate': 0.0, 'current_system_time': (1589143549.0, 753493309.0), 'adjusted_system_time': (1589143549.0, 228870002.5), 'current_drift': -52367646.22229046, 'average_drift': -14272487.658809433, 'average_RTT': 118347576.28571428}
{'offset': -65638281.0, 'RTT': 145982980.0, 'smoothed_offset': -524623306.5, 'smoothed_RTT': 18080711.0, 'drop_rate': 0.0, 'current_system_time': (1589143559.0, 954849481.0), 'adjusted_system_time': (1589143559.0, 430226174.5), 'current_drift': -6469386.07421161, 'average_drift': -13297099.960734705, 'average_RTT': 121802001.75}
{'offset': 414353482.0, 'RTT': 186136484.0, 'smoothed_offset': -524623306.5, 'smoothed_RTT': 18080711.0, 'drop_rate': 0.0, 'current_system_time': (1589143570.0, 195171117.0), 'adjusted_system_time': (1589143570.0, -329452189.5), 'current_drift': 40678178.880761206, 'average_drift': -7299846.756124048, 'average_RTT': 128950277.55555555}
{'offset': -34700086.0, 'RTT': 164871931.0, 'smoothed_offset': -524623306.5, 'smoothed_RTT': 18080711.0, 'drop_rate': 0.0, 'current_system_time': (1589143580.0, 372020006.0), 'adjusted_system_time': (1589143580.0, -152603300.5), 'current_drift': -3413725.8428386585, 'average_drift': -6911234.664795509, 'average_RTT': 132542442.9}
{'offset': 345384341.0, 'RTT': 27503729.0, 'smoothed_offset': -524623306.5, 'smoothed_RTT': 18080711.0, 'drop_rate': 0.0, 'current_system_time': (1589143590.0, 413733720.0), 'adjusted_system_time': (1589143590.0, -110889586.5), 'current_drift': 34443701.07797943, 'average_drift': -3151695.051815969, 'average_RTT': 122993468.9090909}
{'offset': -156930524.5, 'RTT': 153172493.0, 'smoothed_offset': -524623306.5, 'smoothed_RTT': 18080711.0, 'drop_rate': 0.0, 'current_system_time': (1589143600.0, 629509210.0), 'adjusted_system_time': (1589143600.0, 104885903.5), 'current_drift': -15456304.382516315, 'average_drift': -4177079.1627076645, 'average_RTT': 125508387.58333333}
{'offset': -415798577.5, 'RTT': 152435779.0, 'smoothed_offset': -524623306.5, 'smoothed_RTT': 18080711.0, 'drop_rate': 0.0, 'current_system_time': (1589143610.0, 856370687.0), 'adjusted_system_time': (1589143610.0, 331747380.5), 'current_drift': -40955548.653660685, 'average_drift': -7006192.200473281, 'average_RTT': 127579725.38461539}
{'offset': 53230894.5, 'RTT': 14305830.0, 'smoothed_offset': 53230894.5, 'smoothed_RTT': 14305830.0, 'drop_rate': 0.0, 'current_system_time': (1589143620.0, 925663948.0), 'adjusted_system_time': (1589143620.0, 978894842.5), 'current_drift': 5315485.207225791, 'average_drift': -6126072.3856376335, 'average_RTT': 119488732.85714285}
{'offset': 363647429.0, 'RTT': 175778627.0, 'smoothed_offset': 53230894.5, 'smoothed_RTT': 14305830.0, 'drop_rate': 0.0, 'current_system_time': (1589143631.0, 179028034.0), 'adjusted_system_time': (1589143631.0, 232258928.5), 'current_drift': 35736570.37262118, 'average_drift': -3335229.535087046, 'average_RTT': 123241392.46666667}
{'offset': 701310640.0, 'RTT': 16103983.0, 'smoothed_offset': 53230894.5, 'smoothed_RTT': 14305830.0, 'drop_rate': 0.0, 'current_system_time': (1589143641.0, 213399648.0), 'adjusted_system_time': (1589143641.0, 266630542.5), 'current_drift': 70018306.63802125, 'average_drift': 1249366.4757322222, 'average_RTT': 116545304.375}
{'offset': 177379613.0, 'RTT': 152553558.0, 'smoothed_offset': 53230894.5, 'smoothed_RTT': 14305830.0, 'drop_rate': 0.0, 'current_system_time': (1589143651.0, 421552419.0), 'adjusted_system_time': (1589143651.0, 474783313.5), 'current_drift': 17471428.442771286, 'average_drift': 2203605.414969814, 'average_RTT': 118663436.94117647}
{'offset': -152859552.5, 'RTT': 145633221.0, 'smoothed_offset': 53230894.5, 'smoothed_RTT': 14305830.0, 'drop_rate': 0.0, 'current_system_time': (1589143661.0, 620679140.0), 'adjusted_system_time': (1589143661.0, 673910034.5), 'current_drift': -15066536.427081035, 'average_drift': 1244153.0904114337, 'average_RTT': 120161758.27777778}
{'offset': -558811530.0, 'RTT': 178144931.0, 'smoothed_offset': 53230894.5, 'smoothed_RTT': 14305830.0, 'drop_rate': 0.0, 'current_system_time': (1589143671.0, 813785076.0), 'adjusted_system_time': (1589143671.0, 867015970.5), 'current_drift': -54903082.417111635, 'average_drift': -1710964.567879254, 'average_RTT': 123213504.21052632}
{'offset': -67971236.0, 'RTT': 19111633.0, 'smoothed_offset': 53230894.5, 'smoothed_RTT': 14305830.0, 'drop_rate': 0.0, 'current_system_time': (1589143681.0, 887590169.0), 'adjusted_system_time': (1589143681.0, 940821063.5), 'current_drift': -6784157.966273456, 'average_drift': -1964624.2377989641, 'average_RTT': 118008410.65}
{'offset': 88386480.5, 'RTT': 155122757.0, 'smoothed_offset': 701310640.0, 'smoothed_RTT': 16103983.0, 'drop_rate': 0.0, 'current_system_time': (1589143692.0, 97367048.0), 'adjusted_system_time': (1589143692.0, 798677688.0), 'current_drift': 8703634.866360877, 'average_drift': -1456611.8995056385, 'average_RTT': 119775760.47619048}
{'offset': 755776305.5, 'RTT': 136873484.0, 'smoothed_offset': 701310640.0, 'smoothed_RTT': 16103983.0, 'drop_rate': 0.0, 'current_system_time': (1589143702.0, 290049552.0), 'adjusted_system_time': (1589143702.0, 991360192.0), 'current_drift': 74557140.98562187, 'average_drift': 1998558.6861819753, 'average_RTT': 120552929.72727273}
{'offset': 497872607.5, 'RTT': 172153711.0, 'smoothed_offset': -67971236.0, 'smoothed_RTT': 19111633.0, 'drop_rate': 0.0, 'current_system_time': (1589143712.0, 517711400.0), 'adjusted_system_time': (1589143712.0, 449740164.0), 'current_drift': 48944660.26025627, 'average_drift': 4039693.537228684, 'average_RTT': 122796441.95652173}
{'offset': -70138038.5, 'RTT': 14465094.0, 'smoothed_offset': -70138038.5, 'smoothed_RTT': 14465094.0, 'drop_rate': 0.0, 'current_system_time': (1589143722.0, 583363533.0), 'adjusted_system_time': (1589143722.0, 513225494.5), 'current_drift': -7003672.971212615, 'average_drift': 3579553.26604363, 'average_RTT': 118282635.79166667}
{'offset': -612678082.0, 'RTT': 151287556.0, 'smoothed_offset': -70138038.5, 'smoothed_RTT': 14465094.0, 'drop_rate': 0.0, 'current_system_time': (1589143732.0, 789383172.0), 'adjusted_system_time': (1589143732.0, 719245133.5), 'current_drift': -60354716.44558741, 'average_drift': 1022182.4775783884, 'average_RTT': 119602832.6}
{'offset': 33432399.0, 'RTT': 137347460.0, 'smoothed_offset': -70138038.5, 'smoothed_RTT': 14465094.0, 'drop_rate': 0.0, 'current_system_time': (1589143742.0, 981126070.0), 'adjusted_system_time': (1589143742.0, 910988031.5), 'current_drift': 3297943.4839259223, 'average_drift': 1109711.7470532937, 'average_RTT': 120285318.26923077}
{'offset': 406811993.5, 'RTT': 169964552.0, 'smoothed_offset': -70138038.5, 'smoothed_RTT': 14465094.0, 'drop_rate': 0.0, 'current_system_time': (1589143753.0, 191850423.0), 'adjusted_system_time': (1589143753.0, 121712384.5), 'current_drift': 40001318.728293635, 'average_drift': 2550141.6352473805, 'average_RTT': 122125289.8888889}
{'offset': 762719560.0, 'RTT': 16429663.0, 'smoothed_offset': -70138038.5, 'smoothed_RTT': 14465094.0, 'drop_rate': 0.0, 'current_system_time': (1589143763.0, 228390216.0), 'adjusted_system_time': (1589143763.0, 158252177.5), 'current_drift': 76146849.29276082, 'average_drift': 5178595.480158575, 'average_RTT': 118350446.07142857}
{'offset': 438755302.5, 'RTT': 186074257.0, 'smoothed_offset': -70138038.5, 'smoothed_RTT': 14465094.0, 'drop_rate': 0.0, 'current_system_time': (1589143773.0, 513854742.0), 'adjusted_system_time': (1589143773.0, 443716703.5), 'current_drift': 43074033.37438678, 'average_drift': 6485334.717890582, 'average_RTT': 120685749.89655173}
{'offset': 138644104.0, 'RTT': 158298493.0, 'smoothed_offset': -70138038.5, 'smoothed_RTT': 14465094.0, 'drop_rate': 0.0, 'current_system_time': (1589143783.0, 725051403.0), 'adjusted_system_time': (1589143783.0, 654913364.5), 'current_drift': 13648358.93486872, 'average_drift': 6724102.191789853, 'average_RTT': 121939508.0}
{'offset': -77067563.5, 'RTT': 177956820.0, 'smoothed_offset': 762719560.0, 'smoothed_RTT': 16429663.0, 'drop_rate': 0.0, 'current_system_time': (1589143793.0, 958164691.0), 'adjusted_system_time': (1589143794.0, 720884251.0), 'current_drift': -7572007.315707987, 'average_drift': 6262937.368967343, 'average_RTT': 123746518.06451613}
{'offset': 121172430.5, 'RTT': 19437313.0, 'smoothed_offset': 762719560.0, 'smoothed_RTT': 16429663.0, 'drop_rate': 0.0, 'current_system_time': (1589143804.0, 32892227.0), 'adjusted_system_time': (1589143804.0, 795611787.0), 'current_drift': 12093736.07665387, 'average_drift': 6445149.828582547, 'average_RTT': 120486855.40625}
{'offset': 582050109.0, 'RTT': 161080122.0, 'smoothed_offset': 762719560.0, 'smoothed_RTT': 16429663.0, 'drop_rate': 0.0, 'current_system_time': (1589143814.0, 249619245.0), 'adjusted_system_time': (1589143815.0, 12338805.0), 'current_drift': 57282306.80317039, 'average_drift': 7985669.73690339, 'average_RTT': 121716954.39393939}
{'offset': 280531996.0, 'RTT': 159139872.0, 'smoothed_offset': 762719560.0, 'smoothed_RTT': 16429663.0, 'drop_rate': 0.0, 'current_system_time': (1589143824.0, 464898586.0), 'adjusted_system_time': (1589143825.0, 227618146.0), 'current_drift': 27613754.66176867, 'average_drift': 8562966.352340603, 'average_RTT': 122817628.44117647}
{'offset': 49005456.5, 'RTT': 173752308.0, 'smoothed_offset': 121172430.5, 'smoothed_RTT': 19437313.0, 'drop_rate': 0.0, 'current_system_time': (1589143834.0, 692843437.0), 'adjusted_system_time': (1589143834.0, 814015867.5), 'current_drift': 4816851.739300277, 'average_drift': 8455934.506253736, 'average_RTT': 124272905.0}
{'offset': -480102159.5, 'RTT': 14315844.0, 'smoothed_offset': -480102159.5, 'smoothed_RTT': 14315844.0, 'drop_rate': 0.0, 'current_system_time': (1589143844.0, 760972738.0), 'adjusted_system_time': (1589143844.0, 280870578.5), 'current_drift': -47941583.52691157, 'average_drift': 6889336.783110256, 'average_RTT': 121218542.19444445}
{'offset': 9694540.5, 'RTT': 164414883.0, 'smoothed_offset': -480102159.5, 'smoothed_RTT': 14315844.0, 'drop_rate': 0.0, 'current_system_time': (1589143854.0, 984405517.0), 'adjusted_system_time': (1589143854.0, 504303357.5), 'current_drift': 953772.6088113675, 'average_drift': 6728916.129750827, 'average_RTT': 122386010.86486487}
{'offset': 296811347.5, 'RTT': 158821582.0, 'smoothed_offset': -480102159.5, 'smoothed_RTT': 14315844.0, 'drop_rate': 0.0, 'current_system_time': (1589143865.0, 165630102.0), 'adjusted_system_time': (1589143865.0, -314472057.5), 'current_drift': 29217104.0808422, 'average_drift': 7320710.549516389, 'average_RTT': 123344841.68421052}
{'offset': 77841943.5, 'RTT': 180118561.0, 'smoothed_offset': -480102159.5, 'smoothed_RTT': 14315844.0, 'drop_rate': 0.0, 'current_system_time': (1589143875.0, 401681900.0), 'adjusted_system_time': (1589143875.0, -78420259.5), 'current_drift': 7646467.281649569, 'average_drift': 7329063.286237753, 'average_RTT': 124800578.07692307}
{'offset': -436547178.0, 'RTT': 14151335.0, 'smoothed_offset': -436547178.0, 'smoothed_RTT': 14151335.0, 'drop_rate': 0.0, 'current_system_time': (1589143885.0, 470395803.0), 'adjusted_system_time': (1589143885.0, 33848625.0), 'current_drift': -43593027.845928796, 'average_drift': 6056011.00793359, 'average_RTT': 122034347.0}
{'offset': 21572393.0, 'RTT': 161961556.0, 'smoothed_offset': -436547178.0, 'smoothed_RTT': 14151335.0, 'drop_rate': 0.0, 'current_system_time': (1589143895.0, 686383724.0), 'adjusted_system_time': (1589143895.0, 249836546.0), 'current_drift': 2122857.174879082, 'average_drift': 5960080.426639577, 'average_RTT': 123008181.36585365}
{'offset': -299498435.5, 'RTT': 150073528.0, 'smoothed_offset': -436547178.0, 'smoothed_RTT': 14151335.0, 'drop_rate': 0.0, 'current_system_time': (1589143905.0, 890179157.0), 'adjusted_system_time': (1589143905.0, 453631979.0), 'current_drift': -29507021.271698516, 'average_drift': 5115625.624298194, 'average_RTT': 123652594.38095239}
{'offset': 55238804.5, 'RTT': 176194430.0, 'smoothed_offset': -436547178.0, 'smoothed_RTT': 14151335.0, 'drop_rate': 0.0, 'current_system_time': (1589143916.0, 80515861.0), 'adjusted_system_time': (1589143916.0, -356031317.0), 'current_drift': 5428237.921354259, 'average_drift': 5122895.677718103, 'average_RTT': 124874497.53488372}
{'offset': -205749929.5, 'RTT': 147642612.0, 'smoothed_offset': -436547178.0, 'smoothed_RTT': 14151335.0, 'drop_rate': 0.0, 'current_system_time': (1589143926.0, 303363323.0), 'adjusted_system_time': (1589143926.0, -133183855.0), 'current_drift': -20275638.132613413, 'average_drift': 4545656.272937841, 'average_RTT': 125391954.68181819}
{'offset': 483638346.0, 'RTT': 155375719.0, 'smoothed_offset': -436547178.0, 'smoothed_RTT': 14151335.0, 'drop_rate': 0.0, 'current_system_time': (1589143936.0, 510320425.0), 'adjusted_system_time': (1589143936.0, 73773247.0), 'current_drift': 47623875.214695044, 'average_drift': 5502950.027199112, 'average_RTT': 126058260.55555555}
{'offset': 85250723.5, 'RTT': 153871059.0, 'smoothed_offset': -436547178.0, 'smoothed_RTT': 14151335.0, 'drop_rate': 0.0, 'current_system_time': (1589143946.0, 702245235.0), 'adjusted_system_time': (1589143946.0, 265698057.0), 'current_drift': 8395883.993862325, 'average_drift': 5565839.896039617, 'average_RTT': 126662886.60869566}
{'offset': -302849320.5, 'RTT': 150412083.0, 'smoothed_offset': -205749929.5, 'smoothed_RTT': 147642612.0, 'drop_rate': 0.0, 'current_system_time': (1589143956.0, 886284112.0), 'adjusted_system_time': (1589143956.0, 680534182.5), 'current_drift': -29836160.15030707, 'average_drift': 4812605.852500326, 'average_RTT': 127168188.65957446}
{'offset': -868528025.5, 'RTT': 20198583.0, 'smoothed_offset': -868528025.5, 'smoothed_RTT': 20198583.0, 'drop_rate': 0.0, 'current_system_time': (1589143966.0, 946285724.0), 'adjusted_system_time': (1589143966.0, 77757698.5), 'current_drift': -86677725.8260651, 'average_drift': 2906557.2758635464, 'average_RTT': 124939655.20833333}
{'offset': 236866666.5, 'RTT': 146574497.0, 'smoothed_offset': -868528025.5, 'smoothed_RTT': 20198583.0, 'drop_rate': 0.0, 'current_system_time': (1589143977.0, 127332448.0), 'adjusted_system_time': (1589143977.0, -741195577.5), 'current_drift': 23344495.875926748, 'average_drift': 3323658.063619938, 'average_RTT': 125381182.59183674}
{'offset': 750359446.0, 'RTT': 157105684.0, 'smoothed_offset': -868528025.5, 'smoothed_RTT': 20198583.0, 'drop_rate': 0.0, 'current_system_time': (1589143987.0, 293583631.0), 'adjusted_system_time': (1589143987.0, -574944394.5), 'current_drift': 73875321.31146426, 'average_drift': 4734691.328576825, 'average_RTT': 126015672.62}
{'offset': 313121457.0, 'RTT': 152260542.0, 'smoothed_offset': -868528025.5, 'smoothed_RTT': 20198583.0, 'drop_rate': 0.0, 'current_system_time': (1589143997.0, 464298725.0), 'adjusted_system_time': (1589143997.0, -404229300.5), 'current_drift': 30842535.58156959, 'average_drift': 5246609.843341389, 'average_RTT': 126530277.90196079}
{'offset': -239663296.5, 'RTT': 19502402.0, 'smoothed_offset': -239663296.5, 'smoothed_RTT': 19502402.0, 'drop_rate': 0.0, 'current_system_time': (1589144007.0, 527859210.0), 'adjusted_system_time': (1589144007.0, 288195913.5), 'current_drift': -23919680.52746418, 'average_drift': 4685719.64390282, 'average_RTT': 124472049.51923077}
{'offset': 216086952.0, 'RTT': 159087419.0, 'smoothed_offset': -239663296.5, 'smoothed_RTT': 19502402.0, 'drop_rate': 0.0, 'current_system_time': (1589144017.0, 741499185.0), 'adjusted_system_time': (1589144017.0, 501835888.5), 'current_drift': 21270311.307279833, 'average_drift': 4998636.467740122, 'average_RTT': 125125169.6981132}
{'offset': -197002738.5, 'RTT': 157872677.0, 'smoothed_offset': -239663296.5, 'smoothed_RTT': 19502402.0, 'drop_rate': 0.0, 'current_system_time': (1589144027.0, 918179750.0), 'adjusted_system_time': (1589144027.0, 678516453.5), 'current_drift': -19394094.094727546, 'average_drift': 4546919.235101832, 'average_RTT': 125731605.01851852}
{'offset': 206487350.5, 'RTT': 146981955.0, 'smoothed_offset': -239663296.5, 'smoothed_RTT': 19502402.0, 'drop_rate': 0.0, 'current_system_time': (1589144038.0, 122595071.0), 'adjusted_system_time': (1589144038.0, -117068225.5), 'current_drift': 20349632.177896194, 'average_drift': 4834241.288607184, 'average_RTT': 126117975.01818182}
{'offset': 649291139.5, 'RTT': 14567137.0, 'smoothed_offset': 649291139.5, 'smoothed_RTT': 14567137.0, 'drop_rate': 0.0, 'current_system_time': (1589144048.0, 190734863.0), 'adjusted_system_time': (1589144048.0, 840026002.5), 'current_drift': 64834668.400306314, 'average_drift': 5905677.487030382, 'average_RTT': 124125995.76785715}
{'offset': 185639439.5, 'RTT': 180225372.0, 'smoothed_offset': 649291139.5, 'smoothed_RTT': 14567137.0, 'drop_rate': 0.0, 'current_system_time': (1589144058.0, 424994230.0), 'adjusted_system_time': (1589144059.0, 74285369.5), 'current_drift': 18235297.620285336, 'average_drift': 6121986.612175207, 'average_RTT': 125110195.3508772}
{'offset': -139314524.0, 'RTT': 154194832.0, 'smoothed_offset': 649291139.5, 'smoothed_RTT': 14567137.0, 'drop_rate': 0.0, 'current_system_time': (1589144068.0, 632508993.0), 'adjusted_system_time': (1589144069.0, 281800132.5), 'current_drift': -13719898.65321111, 'average_drift': 5779885.142082339, 'average_RTT': 125611654.60344827}
{'offset': -242123242.5, 'RTT': 164503336.0, 'smoothed_offset': 649291139.5, 'smoothed_RTT': 14567137.0, 'drop_rate': 0.0, 'current_system_time': (1589144078.0, 911640167.0), 'adjusted_system_time': (1589144079.0, 560931306.5), 'current_drift': -23820469.578918148, 'average_drift': 5278184.214607754, 'average_RTT': 126270835.6440678}
{'offset': 197241393.5, 'RTT': 163100958.0, 'smoothed_offset': 649291139.5, 'smoothed_RTT': 14567137.0, 'drop_rate': 0.0, 'current_system_time': (1589144089.0, 128129005.0), 'adjusted_system_time': (1589144089.0, 777420144.5), 'current_drift': 19407599.542218383, 'average_drift': 5513674.470067931, 'average_RTT': 126884671.01666667}
{'offset': -87333994.0, 'RTT': 164438009.0, 'smoothed_offset': 649291139.5, 'smoothed_RTT': 14567137.0, 'drop_rate': 0.0, 'current_system_time': (1589144099.0, 347755432.0), 'adjusted_system_time': (1589144099.0, 997046571.5), 'current_drift': -8592112.41415128, 'average_drift': 5282432.062129912, 'average_RTT': 127500299.50819673}
{'offset': 509138939.5, 'RTT': 163611650.0, 'smoothed_offset': 649291139.5, 'smoothed_RTT': 14567137.0, 'drop_rate': 0.0, 'current_system_time': (1589144109.0, 526691675.0), 'adjusted_system_time': (1589144110.0, 175982814.5), 'current_drift': 50094292.95736619, 'average_drift': 6005204.012053077, 'average_RTT': 128082740.64516129}
{'offset': 179175615.5, 'RTT': 152207375.0, 'smoothed_offset': 179175615.5, 'smoothed_RTT': 152207375.0, 'drop_rate': 0.0, 'current_system_time': (1589144119.0, 732326030.0), 'adjusted_system_time': (1589144119.0, 911501645.5), 'current_drift': 17648931.792037986, 'average_drift': 6190025.087925853, 'average_RTT': 128465671.34920634}
{'offset': -162709884.0, 'RTT': 161403180.0, 'smoothed_offset': 179175615.5, 'smoothed_RTT': 152207375.0, 'drop_rate': 0.0, 'current_system_time': (1589144129.0, 928174734.0), 'adjusted_system_time': (1589144130.0, 107350349.5), 'current_drift': -16012540.897919571, 'average_drift': 5843109.994397018, 'average_RTT': 128980319.921875}
{'offset': 255811840.5, 'RTT': 163250923.0, 'smoothed_offset': 179175615.5, 'smoothed_RTT': 152207375.0, 'drop_rate': 0.0, 'current_system_time': (1589144140.0, 146489143.0), 'adjusted_system_time': (1589144140.0, 325664758.5), 'current_drift': 25170276.955485143, 'average_drift': 6140451.024567605, 'average_RTT': 129507559.96923077}
{'offset': -156234651.5, 'RTT': 167948961.0, 'smoothed_offset': 179175615.5, 'smoothed_RTT': 152207375.0, 'drop_rate': 0.0, 'current_system_time': (1589144150.0, 329556703.0), 'adjusted_system_time': (1589144150.0, 508732318.5), 'current_drift': -15365404.773298016, 'average_drift': 5814604.7245999435, 'average_RTT': 130090005.43939394}
{'offset': 515074420.5, 'RTT': 150323868.0, 'smoothed_offset': 515074420.5, 'smoothed_RTT': 150323868.0, 'drop_rate': 0.0, 'current_system_time': (1589144160.0, 533699989.0), 'adjusted_system_time': (1589144161.0, 48774409.5), 'current_drift': 50744629.15649699, 'average_drift': 6485202.104180497, 'average_RTT': 130392003.3880597}
{'offset': 248508170.5, 'RTT': 168063879.0, 'smoothed_offset': 515074420.5, 'smoothed_RTT': 150323868.0, 'drop_rate': 0.0, 'current_system_time': (1589144170.0, 754885673.0), 'adjusted_system_time': (1589144171.0, 269960093.5), 'current_drift': 24440067.79041204, 'average_drift': 6749244.246625078, 'average_RTT': 130946001.55882353}
{'offset': -8456188.5, 'RTT': 170471192.0, 'smoothed_offset': 515074420.5, 'smoothed_RTT': 150323868.0, 'drop_rate': 0.0, 'current_system_time': (1589144180.0, 980778932.0), 'adjusted_system_time': (1589144181.0, 495853352.5), 'current_drift': -831445.1061669159, 'average_drift': 6639379.183541137, 'average_RTT': 131518830.4057971}
{'offset': 425825272.5, 'RTT': 157263041.0, 'smoothed_offset': 515074420.5, 'smoothed_RTT': 150323868.0, 'drop_rate': 0.0, 'current_system_time': (1589144191.0, 194485187.0), 'adjusted_system_time': (1589144191.0, 709559607.5), 'current_drift': 41923229.789476514, 'average_drift': 7143434.192197356, 'average_RTT': 131886604.84285714}
{'offset': 72035808.0, 'RTT': 152787685.0, 'smoothed_offset': 515074420.5, 'smoothed_RTT': 150323868.0, 'drop_rate': 0.0, 'current_system_time': (1589144201.0, 402796983.0), 'adjusted_system_time': (1589144201.0, 917871403.5), 'current_drift': 7095175.259739513, 'average_drift': 7142754.488923302, 'average_RTT': 132180986.25352113}
{'offset': -187373118.5, 'RTT': 163704395.0, 'smoothed_offset': 515074420.5, 'smoothed_RTT': 150323868.0, 'drop_rate': 0.0, 'current_system_time': (1589144211.0, 618999481.0), 'adjusted_system_time': (1589144212.0, 134073901.5), 'current_drift': -18435514.377236076, 'average_drift': 6787500.754671088, 'average_RTT': 132618811.375}
{'offset': -475859837.5, 'RTT': 166577578.0, 'smoothed_offset': 515074420.5, 'smoothed_RTT': 150323868.0, 'drop_rate': 0.0, 'current_system_time': (1589144221.0, 838979244.0), 'adjusted_system_time': (1589144222.0, 354053664.5), 'current_drift': -46806295.810867414, 'average_drift': 6053339.15788289, 'average_RTT': 133083999.9589041}
{'offset': 31350232.0, 'RTT': 161027193.0, 'smoothed_offset': 72035808.0, 'smoothed_RTT': 152787685.0, 'drop_rate': 0.0, 'current_system_time': (1589144232.0, 73483705.0), 'adjusted_system_time': (1589144232.0, 145519513.0), 'current_drift': 3085340.8227858483, 'average_drift': 6013231.07227347, 'average_RTT': 133461610.67567568}
{'offset': 718650508.0, 'RTT': 151880264.0, 'smoothed_offset': 718650508.0, 'smoothed_RTT': 151880264.0, 'drop_rate': 0.0, 'current_system_time': (1589144242.0, 281136751.0), 'adjusted_system_time': (1589144242.0, 999787259.0), 'current_drift': 70789892.0506811, 'average_drift': 6876919.885318905, 'average_RTT': 133707192.72}
{'offset': 415337125.5, 'RTT': 157495737.0, 'smoothed_offset': 718650508.0, 'smoothed_RTT': 151880264.0, 'drop_rate': 0.0, 'current_system_time': (1589144252.0, 493520975.0), 'adjusted_system_time': (1589144253.0, 212171483.0), 'current_drift': 40889716.93948937, 'average_drift': 7324456.688663254, 'average_RTT': 134020199.88157895}
{'offset': -109994064.0, 'RTT': 15164375.0, 'smoothed_offset': -109994064.0, 'smoothed_RTT': 15164375.0, 'drop_rate': 0.0, 'current_system_time': (1589144262.0, 565331459.0), 'adjusted_system_time': (1589144262.0, 455337395.0), 'current_drift': -10982751.743403114, 'average_drift': 7086700.735000054, 'average_RTT': 132476617.74025974}
{'offset': -24046608.5, 'RTT': 14882088.0, 'smoothed_offset': -24046608.5, 'smoothed_RTT': 14882088.0, 'drop_rate': 0.0, 'current_system_time': (1589144272.0, 591044425.0), 'adjusted_system_time': (1589144272.0, 566997816.5), 'current_drift': -2401087.530407677, 'average_drift': 6965062.423905084, 'average_RTT': 130968995.56410256}
{'offset': 268532808.5, 'RTT': 152490139.0, 'smoothed_offset': -24046608.5, 'smoothed_RTT': 14882088.0, 'drop_rate': 0.0, 'current_system_time': (1589144282.0, 751180171.0), 'adjusted_system_time': (1589144282.0, 727133562.5), 'current_drift': 26449945.26696974, 'average_drift': 7211706.510526156, 'average_RTT': 131241415.10126582}
{'offset': -17704612.0, 'RTT': 166549921.0, 'smoothed_offset': -24046608.5, 'smoothed_RTT': 14882088.0, 'drop_rate': 0.0, 'current_system_time': (1589144292.0, 973309516.0), 'adjusted_system_time': (1589144292.0, 949262907.5), 'current_drift': -1741457.2433691982, 'average_drift': 7099791.963602464, 'average_RTT': 131682771.425}
{'offset': 185301863.0, 'RTT': 19432306.0, 'smoothed_offset': -24046608.5, 'smoothed_RTT': 14882088.0, 'drop_rate': 0.0, 'current_system_time': (1589144303.0, 46195268.0), 'adjusted_system_time': (1589144303.0, 22148659.5), 'current_drift': 18494247.711922213, 'average_drift': 7240464.256791596, 'average_RTT': 130296963.20987654}
{'offset': 414446718.5, 'RTT': 14759779.0, 'smoothed_offset': 414446718.5, 'smoothed_RTT': 14759779.0, 'drop_rate': 0.0, 'current_system_time': (1589144313.0, 116547346.0), 'adjusted_system_time': (1589144313.0, 530994064.5), 'current_drift': 41383590.58487408, 'average_drift': 7656843.846158455, 'average_RTT': 128887973.15853658}
{'offset': -99173936.0, 'RTT': 150211096.0, 'smoothed_offset': 414446718.5, 'smoothed_RTT': 14759779.0, 'drop_rate': 0.0, 'current_system_time': (1589144323.0, 333318710.0), 'adjusted_system_time': (1589144323.0, 747765428.5), 'current_drift': -9770627.927047007, 'average_drift': 7446874.306722244, 'average_RTT': 129144878.25301205}
{'offset': -416108219.0, 'RTT': 160335303.0, 'smoothed_offset': 414446718.5, 'smoothed_RTT': 14759779.0, 'drop_rate': 0.0, 'current_system_time': (1589144333.0, 547569990.0), 'adjusted_system_time': (1589144333.0, 962016708.5), 'current_drift': -40954181.78543157, 'average_drift': 6870671.258006128, 'average_RTT': 129516192.83333333}
{'offset': 277005776.0, 'RTT': 153583765.0, 'smoothed_offset': 414446718.5, 'smoothed_RTT': 14759779.0, 'drop_rate': 0.0, 'current_system_time': (1589144343.0, 755710601.0), 'adjusted_system_time': (1589144344.0, 170157319.5), 'current_drift': 27281576.870902978, 'average_drift': 7110799.559334326, 'average_RTT': 129799340.74117647}
{'offset': -49116659.5, 'RTT': 136053801.0, 'smoothed_offset': 414446718.5, 'smoothed_RTT': 14759779.0, 'drop_rate': 0.0, 'current_system_time': (1589144353.0, 949143648.0), 'adjusted_system_time': (1589144354.0, 363590366.5), 'current_drift': -4845737.844757125, 'average_drift': 6971770.054635588, 'average_RTT': 129872067.02325581}
{'offset': 193957640.0, 'RTT': 158528567.0, 'smoothed_offset': 414446718.5, 'smoothed_RTT': 14759779.0, 'drop_rate': 0.0, 'current_system_time': (1589144364.0, 121223449.0), 'adjusted_system_time': (1589144364.0, 535670167.5), 'current_drift': 19093084.07421049, 'average_drift': 7111095.5031364495, 'average_RTT': 130201452.08045977}
{'offset': 733268835.0, 'RTT': 157902002.0, 'smoothed_offset': 414446718.5, 'smoothed_RTT': 14759779.0, 'drop_rate': 0.0, 'current_system_time': (1589144374.0, 290132999.0), 'adjusted_system_time': (1589144374.0, 704579717.5), 'current_drift': 72187035.753606, 'average_drift': 7850594.824164513, 'average_RTT': 130516231.05681819}
{'offset': 384095708.5, 'RTT': 147869348.0, 'smoothed_offset': -49116659.5, 'smoothed_RTT': 136053801.0, 'drop_rate': 0.0, 'current_system_time': (1589144384.0, 479261636.0), 'adjusted_system_time': (1589144384.0, 430144976.5), 'current_drift': 37849887.03817908, 'average_drift': 8187665.523198384, 'average_RTT': 130711209.8988764}
{'offset': 69552276.5, 'RTT': 162010432.0, 'smoothed_offset': -49116659.5, 'smoothed_RTT': 136053801.0, 'drop_rate': 0.0, 'current_system_time': (1589144394.0, 695252180.0), 'adjusted_system_time': (1589144394.0, 646135520.5), 'current_drift': 6844342.166878814, 'average_drift': 8172739.708128166, 'average_RTT': 131058979.03333333}
{'offset': -220914545.0, 'RTT': 151873112.0, 'smoothed_offset': -49116659.5, 'smoothed_RTT': 136053801.0, 'drop_rate': 0.0, 'current_system_time': (1589144404.0, 901744365.0), 'adjusted_system_time': (1589144404.0, 852627705.5), 'current_drift': -21760963.968202915, 'average_drift': 7843797.909487165, 'average_RTT': 131287705.76923077}
{'offset': -775664538.0, 'RTT': 14700889.0, 'smoothed_offset': -775664538.0, 'smoothed_RTT': 14700889.0, 'drop_rate': 0.0, 'current_system_time': (1589144414.0, 967869043.0), 'adjusted_system_time': (1589144414.0, 192204505.0), 'current_drift': -77452591.60480554, 'average_drift': 6916663.240853548, 'average_RTT': 130020457.76086956}
{'offset': 394448633.0, 'RTT': 147518396.0, 'smoothed_offset': -775664538.0, 'smoothed_RTT': 14700889.0, 'drop_rate': 0.0, 'current_system_time': (1589144425.0, 175702810.0), 'adjusted_system_time': (1589144425.0, -599961728.0), 'current_drift': 38871438.08041637, 'average_drift': 7260262.970311212, 'average_RTT': 130208607.63440861}
{'offset': -139897244.5, 'RTT': 19578934.0, 'smoothed_offset': -775664538.0, 'smoothed_RTT': 14700889.0, 'drop_rate': 0.0, 'current_system_time': (1589144435.0, 249591112.0), 'adjusted_system_time': (1589144435.0, -526073426.0), 'current_drift': -13962387.583502019, 'average_drift': 7034490.092079156, 'average_RTT': 129031696.21276596}
{'offset': 304019759.0, 'RTT': 148239374.0, 'smoothed_offset': -775664538.0, 'smoothed_RTT': 14700889.0, 'drop_rate': 0.0, 'current_system_time': (1589144445.0, 451598405.0), 'adjusted_system_time': (1589144445.0, -324066133.0), 'current_drift': 29957882.13065854, 'average_drift': 7275788.955643149, 'average_RTT': 129233882.29473685}
{'offset': -249607332.5, 'RTT': 17404318.0, 'smoothed_offset': -775664538.0, 'smoothed_RTT': 14700889.0, 'drop_rate': 0.0, 'current_system_time': (1589144455.0, 522405862.0), 'adjusted_system_time': (1589144455.0, -253258676.0), 'current_drift': -24917366.273365587, 'average_drift': 6940443.588674308, 'average_RTT': 128068991.0}
{'offset': 206205084.0, 'RTT': 155303001.0, 'smoothed_offset': -775664538.0, 'smoothed_RTT': 14700889.0, 'drop_rate': 0.0, 'current_system_time': (1589144465.0, 733258485.0), 'adjusted_system_time': (1589144465.0, -42406053.0), 'current_drift': 20305163.123118516, 'average_drift': 7078224.202431465, 'average_RTT': 128349753.98969072}
{'offset': -316986578.5, 'RTT': 19504309.0, 'smoothed_offset': -775664538.0, 'smoothed_RTT': 14700889.0, 'drop_rate': 0.0, 'current_system_time': (1589144475.0, 808501482.0), 'adjusted_system_time': (1589144475.0, 32836944.0), 'current_drift': -31636952.16092351, 'average_drift': 6683171.382397231, 'average_RTT': 127239086.18367347}
{'offset': -1866035.0, 'RTT': 151319504.0, 'smoothed_offset': -249607332.5, 'smoothed_RTT': 17404318.0, 'drop_rate': 0.0, 'current_system_time': (1589144485.0, 969516038.0), 'adjusted_system_time': (1589144485.0, 719908705.5), 'current_drift': -183821.91588637442, 'average_drift': 6613807.813727699, 'average_RTT': 127482322.72727273}
{'offset': 163701399.0, 'RTT': 19475937.0, 'smoothed_offset': -249607332.5, 'smoothed_RTT': 17404318.0, 'drop_rate': 0.0, 'current_system_time': (1589144496.0, 42987823.0), 'adjusted_system_time': (1589144496.0, -206619509.5), 'current_drift': 16338319.491889011, 'average_drift': 6711052.930509312, 'average_RTT': 126402258.87}